package com.wangdong.mijiqiqi.builder;

/**
 * 作者：wangdong on 2018/8/31 18:26
 * 邮箱：2100520956@qq.com
 *
 * 创建导演类  Director类
 *
 * 这个类很简单,其实就是获得一个具体的建造者对象,
 *              然后调用具体的方法给产品安装部件,
 *                  安装完成后调用builder.builderProduct()方法获得建造好的产品,
 *                          此处导演类是在build()方法中完成了建造过程,
 *                                  同时将获得的建造好的产品返回出去,以供其他模块使用该产品。

        此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。
 */

public class Director
{

    private Builder builder = new ConcreteBuilder();

    //构建产品,调用各个添加部件的方法
    public Product build()
    {
        builder.setPart1();
        builder.setPart2();
        builder.setPart3();

        //调用构建产品的方法来构建产品
        return builder.builderProduct();
    }
}
